package com.molichuxing.services.business.dto.response;

import com.molichuxing.services.property.GoodsPaymentTypeEnum;
import com.molichuxing.services.property.GoodsUpperSelfEnum;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;

/**
 * @create_date: 2019/4/3
 * @name:goods-service
 * @author xuelin yi
 **/
@Data
public class GoodsBizBizDto extends GoodsSpecBizDto {

    private static final long serialVersionUID = 1L;

    /**
     * 商品ID
     */
    private Integer goodsId;

    /**
     * 里程包ID
     */
    private Integer packageId;

    /**
     * 商品编号
     */
    private String code;

    /**
     * 商品类型（1：专属，2：订阅）
     */
    private Integer type;

    /**
     * 商品类型（1：专属，2：订阅）
     */
    private String typeStr;

    /**
     * 车型ID
     */
    private Integer vehicleStyleId;


    /**
     * 保证金
     */
    private BigDecimal bond;

    /**
     * 租车费
     */
    private BigDecimal rental;

    /**
     * 服务费
     */
    private BigDecimal serviceFee;

    /**
     * 付款方式(1:全款，2：分期)
     */
    private Integer paymentType;

    /**
     * 付款方式
     */
    private String paymentTypeStr;

    /**
     * 还 款 周 期
     */
    private Integer paymentCycle;

    /**
     * 首 付 期 数
     */
    private Integer firstTerms;

    /**
     * 结算日（0：首付款日，1-28对应每月的几号）
     */
    private Integer settleDay;

    /**
     * 过户时限（0，12，24，36）
     */
    private Integer transferTime;

    /**
     * 是否分销
     */
    private Boolean isDistribution;

    /**
     * 是否上架状态（0：上架，1：下架）
     */
    private Integer upperShelf;

    /**
     * 是否上架
     */
    private String upperShelfStr;

    /**
     * 是否禁售(0:否，1：是)，默认为0
     */
    private Boolean isForbidSale;

    /**
     * 总里程
     */
    private BigDecimal totalMileage;

    /**
     * 月供
     */
    private String monthlySupply;

    /**
     * 里程单价
     */
    private String mileagePrice;

    /**
     * 创建时间
     */
    private LocalDateTime gmtCreate;

    /**
     * 里程限制
     */
    private Integer limitMileage;

    /**
     * 专属商品类型：1：专属里程，2：订悦里程
     */
    private Integer exclusiveType;

    /**
     * 里程规格集合
     */
    private List<GoodsPackageBizDto> packageList;

    public void setPaymentType(Integer paymentType) {
        this.paymentType = paymentType;
        if(null != paymentType) {
            this.paymentTypeStr = GoodsPaymentTypeEnum.getName(paymentType);
        }
    }

    public void setUpperShelf(Integer upperShelf) {
        this.upperShelf = upperShelf;
        if(null != upperShelf) {
            if(GoodsUpperSelfEnum.UPPER_SELF.getValue() == upperShelf){
                this.upperShelfStr = GoodsUpperSelfEnum.UPPER_SELF.getName();
            }else {
                this.upperShelfStr = GoodsUpperSelfEnum.LOWER_SHELF.getName();
            }
        }
    }
}
